#ifndef _AENGINE_H
#define	_AENGINE_H

#include <vector>

#include "sdlengine.h"
#include "sdlvideoviewer.h"


class AEngine : public SDLEngine {
public:
    void AdditionalInit();
    void Think(const int& iElapsedTime);
    void Render(SDL_Surface* pDestSurface);

    void KeyUp(const int& iKeyEnum);
    void KeyDown(const int& iKeyEnum);

    void MouseMoved(const int& iButton,
            const int& iX,
            const int& iY,
            const int& iRelX,
            const int& iRelY);

    void MouseButtonUp(const int& iButton,
            const int& iX,
            const int& iY,
            const int& iRelX,
            const int& iRelY);

    void MouseButtonDown(const int& iButton,
            const int& iX,
            const int& iY,
            const int& iRelX,
            const int& iRelY);

    void WindowInactive();
    void WindowActive();

    void End();
    
    
    template<class T> T* NewWidget();
    
private:
    vector<SDLVideoViewer*> m_viewers;
    vector<SDLWidget*> m_widgets;
};

#endif	/* _AENGINE_H */

